home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 February
/
EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso
/
earcd
/
util1
/
yk211src.lha
/
Yak_2.11_Src
/
Prefs
/
BGUI
/
Misc_window.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-11-16
|
18KB
|
360 lines
/************************************************************************
********************** BGUI MISCELLANEOUS WINDOW **********************
************************************************************************/
#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/classes.h>
#include <intuition/classusr.h>
#include <intuition/imageclass.h>
#include <intuition/gadgetclass.h>
#include <intuition/intuitionbase.h>
#include <libraries/bgui.h>
#include <libraries/bgui_macros.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/bgui.h>
#include <proto/wb.h>
#include <clib/alib_protos.h>
#include <string.h>
#include "yak.h"
#include "version.h"
#include "hotkey_types.h"
#include "gui.h"
#include "Misc_Window.h"
#include "Settings.h"
#include "yak_locale_strings.h"
/************************************************************************
***************************** REFERENCES ******************************
************************************************************************/
IMPORT LONG (*HandleReturnID)(LONG ID);
IMPORT char *PrefsHelp;
/************************************************************************
***************************** LOCAL DATA ******************************
************************************************************************/
struct Window *MiscWnd = NULL;
Object *MiscWndObj = NULL;
Object *MiscObjects[Misc_CNT];
struct IBox MiscBox;
BOOL MiscBoxValid = FALSE;
/************************************************************************
************************* CREATEMISCWINDOW() **************************
*************************************************************************
* Create the misc window object tree. Returns the window object ptr or
* NULL if create failed. Gadgets are initialised with default values,
* InitMiscGadgets must be called after window opened to reflect current
* settings.
*
*************************************************************************/
APTR CreateMiscWindow(void)
{
Object *obj,*indicobj;
/* maplist: converts slider level tag to indicator level tag */
static struct TagItem SliderToIndicMap[] = {
SLIDER_Level, INDIC_Level, TAG_DONE
};
obj = WindowObject,
WINDOW_PubScreenName, PubScreenName,
WINDOW_Title, getString(MISCELLANEOUS_STRING),
WINDOW_ScreenTitle, getString(COPYRIGHT_STRING),
WINDOW_SmartRefresh, TRUE,
WINDOW_SizeBottom, FALSE, /* put size gadget in right border */
WINDOW_SizeRight, TRUE,
WINDOW_AutoAspect, TRUE, /* automatic edges pixel width */
(MiscBoxValid ? WINDOW_Bounds : TAG_IGNORE), &MiscBox,
WINDOW_Position, POS_CENTERMOUSE,
WINDOW_AppWindow, TRUE, /* make it an appwindow */
WINDOW_RMBTrap, TRUE, /* trap rmb - no menu */
WINDOW_CloseGadget, FALSE, /* no windowclose gadget please */
(TextFont ? WINDOW_Font : TAG_IGNORE), &Attr, /* use font if specified */
WINDOW_HelpFile, PrefsHelp, /* online help system */
WINDOW_HelpNode, "Miscellaneous",
WINDOW_MasterGroup,
VGroupObject, Spacing(4), HOffset(4), VOffset(4),
StartMember,
HGroupObject, Spacing(24), EqualWidth,
StartMember,
VGroupObject, Spacing(2),
StartMember,
CH_WildStar = CheckBoxObject,
LAB_Label, getString(WILD_STAR_STRING),
LAB_Place, PLACE_RIGHT,
GA_ID, GD_WildStarCheck,
ButtonFrame,
FRM_Flags, FRF_EDGES_ONLY,
EndObject, FixMinWidth,
EndMember,
VarSpace(DEFAULT_WEIGHT/10),
StartMember,
CH_NoClick = CheckBoxObject,
LAB_Label, getString(NOCLICK_STRING),
LAB_Place, PLACE_RIGHT,
GA_ID, GD_NoClickCheck,
ButtonFrame,
FRM_Flags, FRF_EDGES_ONLY,
EndObject, FixMinWidth,
EndMember,
VarSpace(DEFAULT_WEIGHT/10),
StartMember,
CH_MMBShift = CheckBoxObject,
LAB_Label, getString(MMB_SHIFT_STRING),
LAB_Place, PLACE_RIGHT,
GA_ID, GD_MMBShiftCheck,
ButtonFrame,
FRM_Flags, FRF_EDGES_ONLY,
EndObject, FixMinWidth,
EndMember,
VarSpace(DEFAULT_WEIGHT/10),
StartMember,
CH_FullWorkbench = CheckBoxObject,
LAB_Label, getString(FULL_WORKBENCH_STRING),
LAB_Place, PLACE_RIGHT,
GA_ID, GD_FullWorkbenchCheck,
ButtonFrame,
FRM_Flags, FRF_EDGES_ONLY,
EndObject, FixMinWidth,
EndMember,
EndObject,
EndMember,
StartMember,
VGroupObject, Spacing(2),
StartMember,
CH_BlackBorder = CheckBoxObject,
LAB_Label, getString(BLACK_BORDER),
LAB_Place, PLACE_RIGHT,
GA_ID, GD_BlackBorderCheck,
ButtonFrame,
FRM_Flags, FRF_EDGES_ONLY,
EndObject, FixMinWidth,
EndMember,
VarSpace(DEFAULT_WEIGHT/10),
StartMember,
CH_CapShift = CheckBoxObject,
LAB_Label, getString(CAPSHIFT_STRING),
LAB_Place, PLACE_RIGHT,
GA_ID, GD_CapShiftCheck,
ButtonFrame,
FRM_Flags, FRF_EDGES_ONLY,
EndObject, FixMinWidth,
EndMember,
VarSpace(DEFAULT_WEIGHT/10),
StartMember,
CH_UnixDirs = CheckBoxObject,
LAB_Label, getString(UNIXDIRS_STRING),
LAB_Place, PLACE_RIGHT,
GA_ID, GD_UnixDirsCheck,
ButtonFrame,
FRM_Flags, FRF_EDGES_ONLY,
EndObject, FixMinWidth,
EndMember,
VarSpace(DEFAULT_WEIGHT/10),
StartMember,
CH_SlashDir = CheckBoxObject,
LAB_Label, getString(SLASHDIR_STRING),
LAB_Place, PLACE_RIGHT,
GA_ID, GD_SlashDirCheck,
ButtonFrame,
FRM_Flags, FRF_EDGES_ONLY,
EndObject, FixMinWidth,
EndMember,
EndObject,
EndMember,
EndObject, Weight(DEFAULT_WEIGHT*4),
EndMember,
VarSpace(DEFAULT_WEIGHT/10),
StartMember,
HGroupObject, Spacing(2),
StartMember,
SL_ClickVol = SliderObject,
LAB_Label, getString(CLICKVOLUME_STRING),
SLIDER_Min, 0,
SLIDER_Max, 64,
SLIDER_Level, 0,
GA_ID, GD_ClickVol,
EndObject,
EndMember,
StartMember,
indicobj = IndicatorObject,
INDIC_Min, 0,
INDIC_Max, 64,
INDIC_Level, 0,
INDIC_FormatString,"%2lu",
INDIC_Justification,IDJ_CENTER,
EndObject, Weight(DEFAULT_WEIGHT/10),
EndMember,
EndObject, NoAlign,
EndMember,
VarSpace(DEFAULT_WEIGHT/10),
StartMember,
HorizSeparator,
EndMember,
StartMember,
HGroupObject, Spacing(2),
VarSpace(DEFAULT_WEIGHT),
StartMember,
BT_Return2 = Button(getString(OK_STRING),GD_Return2),
EndMember,
VarSpace(DEFAULT_WEIGHT),
EndObject,
EndMember,
EndObject,
EndObject;
if (obj)
{
/* add map from slider to its level indicator */
AddMap(SL_ClickVol,indicobj,SliderToIndicMap);
/* add conditional map: disables CH_SlashDir */
/* when CH_UnixDirs is unchecked */
AddCondit(CH_UnixDirs,CH_SlashDir,GA_Selected,TRUE,
GA_Disabled,FALSE,GA_Disabled,TRUE);
}
return(obj);
}
/************************************************************************
************************** CLOSEMISCWINDOW() **************************
*************************************************************************
* Close the misc window, disposing of the window object.
*
*************************************************************************/
void CloseMiscWindow(void)
{
if (MiscWnd)
{
GetAttr(WINDOW_Bounds,MiscWndObj,(ULONG *) &MiscBox);
MiscBoxValid = TRUE;
}
DisposeObject(MiscWndObj);
MiscWndObj = NULL;
MiscWnd = NULL;
}
/************************************************************************
************************* INITMISCGADGETS() ***************************
*************************************************************************
* Initialize the misc window gadgets to reflect current settings.
*
*************************************************************************/
static void InitMiscGadgets(void)
{
InitToggleGadgets(MISC_WINDOW);
InitWindowGadget(GDX_SlashDirCheck, GA_Disabled, !unixdirs, MISC_WINDOW);
InitWindowGadget(GDX_ClickVol, SLIDER_Level, click_volume, MISC_WINDOW);
}
/************************************************************************
************************ HANDLEMISCRETURNID() *************************
*************************************************************************
* Handle msgs arriving at misc window - supply the ID returned by BGUI.
* Returns either RET_OKAY or RET_QUIT.
*
*************************************************************************/
LONG HandleMiscReturnID(LONG id)
{
LONG ret;
LONG num;
ret = RET_OKAY;
switch(id)
{
case GD_Return2:
CloseMiscWindow();
if (!ShowWindowID(ROOT_WINDOW))
ret= RET_QUIT;
break;
case GD_ClickVol:
GetAttr(SLIDER_Level,SL_ClickVol,(ULONG *)&num);
click_volume = num;
break;
case GD_BlackBorderCheck:
blackborder ^= TRUE;
break;
case GD_WildStarCheck: /* toggle */
wildstar ^= TRUE;
break;
case GD_NoClickCheck: /* toggle */
noclick ^= TRUE;
break;
case GD_UnixDirsCheck: /* toggle */
unixdirs ^= TRUE;
break;
case GD_MMBShiftCheck: /* toggle */
mmbshift ^= TRUE;
break;
case GD_SlashDirCheck: /* toggle */
slashdir ^= TRUE;
break;
case GD_FullWorkbenchCheck: /* toggle */
fullworkbench ^= TRUE;
break;
case GD_CapShiftCheck: /* toggle */
capshift ^= TRUE;
break;
default:
break;
}
return(ret);
}
/************************************************************************
************************** SHOWMISCWINDOW() ***************************
*************************************************************************
* Create and open the misc window and initialize the gadgets to reflect
* current settings. Sets up HandleReturnID function, curwin, curwinobj
* and curwinID. Returns TRUE or FALSE to indicate success.
*
*************************************************************************/
BOOL ShowMiscWindow(void)
{
if (MiscWndObj = (Object *)CreateMiscWindow())
{
if (MiscWnd = WindowOpen(MiscWndObj))
{
InitMiscGadgets();
HandleReturnID = HandleMiscReturnID;
curwin = MiscWnd;
curwinobj = MiscWndObj;
curwinID = MISC_WINDOW;
return(TRUE);
}
}
CloseMiscWindow();
curwin = NULL;
curwinobj = NULL;
wndsigflag = 0L;
appwinsigflag = 0L;
return(FALSE);
}